package com.yejiali.backend.utils;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

/**
 * @Author:yejiali
 * @Date:2025/5/20-05-20-9:30
 * @Decsription:com.yejiali.backend.utils
 * @Version:1.0
 */
@Component
public class FileUtil {
    // 图片允许的后缀扩展名
    public static String[] IMAGE_FILE_EXTD = new String[] { "png", "bmp", "jpg", "jpeg","pdf" };

    //判断文件类型是否允许
    public static boolean isFileAllowed(String fileName) {
        for (String ext : IMAGE_FILE_EXTD) {
            if (ext.equals(fileName)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 生成用户专属文件存储路径（整合用户ID、日期目录、UUID防重）
     * @param originalFileName 原始文件名（用于提取扩展名）
     * @param userId 用户ID（用于用户隔离）
     * @return 格式：yyyy/MM/dd/user_{userId}/uuid.ext
     */
    public static String generateFilePath(String originalFileName, Long userId) {
        // 1. 用户隔离目录
        String userDir = "user_" + userId + "/";

        // 2. 唯一文件名（UUID + 原始文件扩展名）
        String uuid = UUID.randomUUID().toString().replace("-", "");
        String fileExtension = extractFileExtension(originalFileName);

        // 3. 拼接完整路径
        return new StringBuilder()
                .append(userDir)
                .append(uuid)
                .append(fileExtension)
                .toString();
    }

    /**
     * 安全提取文件扩展名（兼容无后缀情况）
     */
    private static String extractFileExtension(String fileName) {
        if (fileName == null || fileName.lastIndexOf(".") == -1) {
            return ""; // 无扩展名时返回空字符串
        }
        return fileName.substring(fileName.lastIndexOf("."));
    }
}
